Size Class
概要
アプリケーションの表示サイズについて、カスタマイズ可能な軸は 3 つ存在する。
Screen Size ディスプレイの水平/垂直方向のサイズ
Orientation ディスプレイの向き
Adaptation マルチタスキングモード (Split View の状態など)
これら各々の変更を検知してインタフェースを変更するコードを書くのは大変なので、これらの軸の変更を監視するのではなく、available space に基づいてレイアウトを変更するようにする。
Base layout on available space, not device, orientation, or adaptation.
available space に応答する方法は2つある。これら各々に対応するためには、それぞれ異なるテクニックを利用する。
Coarse grain changes iPad から iPhone、などの大きな粒度での変更
Fine grain changes iPhone 6s から SE、などの小さな粒度での変更
Coarse Grain changes
コンピュータサイエンスにおける有名な引用として、以下がある。
All problems in computer science can be solved by another level of indirection
David Wheeler
これに示されれているように、Size Class は問題を解決するための 間接層 (indirection) としての役割を持つ。間接層というのは高位の振る舞いを表現するものだが、Size Class の場合は 体験 を記述している、と言える。 Size Class に関連する Trait は horizonalSizeClass と verticalSizeClass の2つであり、各々 compact, regular, (unspecified) という値を設定できる。compact は、空間が制限されている、ということを示し、限られたスペース内で情報を表示する必要がある。regular は、スペースに制限がない、ということを示し、最大で 12.9 インチの iPad Pro の端から端までの範囲内を自由に使って情報を表示できることを示す。 これらの組み合わせとその表現方法、そしてそれに対応する環境を図示すると以下のようになる。
https://gyazo.com/90d98b06ece352dad39b93e40d606803
Trait 全体を考えた場合でも、Layout Trait が最も一般的であり、Size Class はその中でもさらに一般的なものである。Size Class の良いところは、本来膨大な数ある組み合わせのうち、4つの状態しか考えなくてよくなるところ。しかし、基本的にはその内の 2 つについてのみ考えれば良い。というのは、width (= horizontalSizeClass) が一般的にはよく着目される。例えば、設計において、iPhone と iPad の違いを考えることは、この width の違いを考えることと同義になる。 Fine Grain Changes
AutoLayout を利用する。
参考